/**
 * 时间蹉转自定义格式时间
 */
const dateRegExp = (time, strText) => {
  let date = new Date(time)
  // 匹配strText中是否有(y+)(至少一个y)的文本
  // ? 0或1个  + 至少一个 *至少0个
  if (/(y+)/.test(strText)) {
    // RegExp.$1是RegExp的一个属性,指的是与正则表达式匹配的第一个 子匹配(以括号为标志)字符串
    // substr(a) 从第a位开始截取 === substring(a)   substring(a,b)截取[a,b)间
    // replace(pattern,replacement) 把字符串中pattern替换成replacement 返回替换后的字符串
    // console.log(typeof (date.getFullYear())) number
    // console.log(typeof (date.getFullYear() + '')) string
    strText = strText.replace(RegExp.$1, (date.getFullYear() + '').substr(4 - RegExp.$1.length))
  }
  let dataType = {
    'M+': date.getMonth() + 1,
    'd+': date.getDate(),
    'h+': date.getHours(),
    'm+': date.getMinutes(),
    's+': date.getSeconds()
  }
  for (let typeKey in dataType) {
    // console.log(`/(${typeKey})/`)
    if (new RegExp(`(${typeKey})`).test(strText)) {
      let typeValue = dataType[typeKey] + ''
      // length从零开始算起的
      // console.log(RegExp.$1 + '****') MM
      // console.log(RegExp.$1.length + '***') 2
      // 判断模板的格式，若一个M就typeValue 两个MM就padLeftZero(typeValue)
      strText = strText.replace(RegExp.$1, (RegExp.$1.length === 1 ? typeValue : padLeftZero(typeValue)))
    }
  }
  return strText
}
/**
* 数字前加 0
* by Jehu
*/
const padLeftZero = (str) => {
  // console.log(str + '....') 7
  // console.log(str.length + '...') 1
  // 若str=7 从第一位算起substr(1)  007 ==>07
  // 若str=17 从第二位算起substr(2)  0017 ==>17
  return ('00' + str).substr(str.length)
}

module.exports = {
  dateRegExp
}
